home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / linux / src / atalnx_3.lzh / atari-linux-0.01pl3 / tools / atari / boot_asm.S < prev    next >
Encoding:
Text File  |  1994-06-17  |  1.6 KB  |  109 lines

  1. .text
  2. .globl _cache_off , _disable_mmu , _jump_to , _change_stack , _raise_int
  3. .globl _copy_kernel, _copy_kernel_end
  4.  
  5. _raise_int:
  6.  movew #0x3700,sr
  7.  movec isp,d0
  8.  movel d0,sp
  9.  rts
  10.  
  11. _cache_off:
  12.  moveml d0-d2/a0-a2,sp@-
  13.  movec cacr,d0
  14.  bclr #0,d0
  15.  bclr #8,d0
  16.  movec d0,cacr
  17.  moveml sp@+,d0-d2/a0-a2
  18.  rts
  19.  
  20. _disable_mmu: 
  21.  moveml d0-d2/a0-a2,sp@-
  22.  
  23.  pmove tc,mem
  24.  movel #mem,a0
  25.  movel a0@,d0   
  26.  bclr #31,d0
  27.  movel d0,a0@
  28.  pmove mem,tc
  29.  
  30.  movel #0,mem
  31.  .word 0xf039, 0x0800; .long mem | pmove mem,tt0
  32.  .word 0xf039, 0x0c00; .long mem | pmove mem,tt1
  33.  
  34.  moveml sp@+,d0-d2/a0-a2
  35.  rts
  36.  
  37. _jump_to:
  38.  movel sp@(4),d0
  39.  movel d0,a0
  40.  jmp a0@
  41.  
  42. _change_stack:
  43.  movel a0,mem
  44.  movel sp@,mem+4
  45.  movel sp@(4),a0
  46.  movel a0,usp
  47.  movel a0,sp
  48.  movel mem,a0
  49.  movel mem+4,sp@-
  50.  rts
  51.  
  52.  
  53. .data
  54.  
  55. mem: .long 0,0
  56.  
  57. .text
  58.  
  59.  
  60. | Register layout for copy_kernel:
  61. |
  62. |   a6 = memptr
  63. |   a5 = KSTART_MEM
  64. |   a4 = ramdisk_addr
  65. |   d7 = kexec.a_text + kexec.a_data
  66. |   d6 = kexec.a_bss
  67. |   d5 = rd_size
  68. |
  69. |   a0 = src
  70. |   a1 = dst
  71. |   a2 = limit
  72. |   
  73. |   KSTART_MEM should be the real destination address, i.e. the 8 bytes
  74. |   already added.
  75.  
  76. _copy_kernel:
  77.     | copy kernel text and data
  78.     lea    a6@(d5:l),a0
  79.     movel    a5,a1
  80.     lea    a0@(d7:l),a2
  81. 1:    movel    a0@+,a1@+
  82.     cmpl    a0,a2
  83.     bhi    1b
  84.  
  85.     | clear kernel bss
  86.     lea    a5@(d7:l),a1
  87.     lea    a1@(d6:l),a2
  88.     moveq    #0,d0
  89. 1:    movel    d0,a1@+
  90.     cmpl    a1,a2
  91.     bhi    1b
  92.     
  93.     | copy ramdisk contents
  94.     cmpl    #0,d5
  95.     beq    nord
  96.     movel    a6,a0
  97.     movel    a4,a1
  98.     lea    a0@(d5:l),a2
  99. 1:    movel    a0@+,a1@+
  100.     cmpl    a0,a2
  101.     bhi    1b             
  102.     
  103. nord:    | jump to kernel    
  104.     jmp    a5@
  105.  
  106. _copy_kernel_end:
  107.  
  108.  
  109.